/**
 * Copyright 2011 Joe Choi, All rights reserved.
 */
package tao.calendar.gregorian;

/**
 * The ModifiableDate interface represents the GregorianDate which can be modified
 * 
 * @author Joe Choi
 * @version 1.0.0
 */
public interface ModifiableDate extends GregorianDate {
	/**
	 * Set the Era of the date
	 */
	public ModifiableDate setEra(GregorianDate.Era era);
	
	/**
	 * Set the year of the date. The value of year have to greater than zero
	 */	
	public ModifiableDate setYear(int year);
	
	/**
	 * Set the month of the date. the value of month have to between 1 and 12
	 */
	public ModifiableDate setMonth(int month);
	
	/**
	 * Set the day for the date. the value of day have to :
	 * <ul>
	 * <li> 1 - 31 for long month </li>
	 * <li> 1 - 30 for short month </li>
	 * <li> 28 for February of an non-leap year </li>
	 * <li> 29 for February of a leap year </li>
	 * </ul>
	 */
	public ModifiableDate setDay(int day);
}
